/**
 * (C)2012 Exlu Corporation. All rights reserved.
 * 注意事項   :
 */
package cn.exlu.wea.field.validator.effective;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 日期有效性判定类
 * @author Mark 
 * @version 1.0.1.1
 * @CreateTime 2012-02-26
 * @UpdateTime 2012-12-10
 */
public final class LpEffectiveDateUtil {

    /**
     * 日期相等判定
     * @param strDate 日期字段
     * @param refDate 参考日期 
     * @param pattern 日期格式
     * @return true：相等 false：不相等
     */
    public static boolean isEqualsDate(String strDate, String refDate, String pattern) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

        Date date;
        try {
            date = simpleDateFormat.parse(strDate);
            return date.equals(simpleDateFormat.parse(refDate));
        } catch (ParseException e) {
        }
        return false;
    }

    /**
     * 在参考日期前判定
     * @param strDate 日期字段
     * @param refDate 参考日期
     * @param pattern 格式
     * @return true：日期前 false：不在日期前
     */
    public static boolean isBeforeDate(String strDate, String refDate, String pattern) {
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat(pattern);
        
        Date date;
        try {
            date = simpleDateFormat.parse(strDate);
            return date.before(simpleDateFormat.parse(refDate));
        } catch (ParseException e) {
        }
        return false;
    }

    /**
     * 在参考日期后判定
     * @param strDate 日期字段
     * @param refDate 参考日期
     * @param pattern 格式
     * @return true：日期后 false：不在日期后
     */
    public static boolean isAfterDate(String strDate, String refDate, String pattern) {
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat(pattern);

        Date date;
        try {
            date = simpleDateFormat.parse(strDate);
            return date.after(simpleDateFormat.parse(refDate));
        } catch (ParseException e) {
        }
        return false;
    }

    /**
     * 在参考日期日期范围之内判定
     * @param strDate 日期字段 
     * @param minDate 参考日期（最小）
     * @param maxDate 参考日期（最大）
     * @param pattern 格式
     * @return true：日期范围之内 false：不在日期范围之内
     */
    public static boolean isBetweenDate(String strDate, String minDate, String maxDate, String pattern) {
        if (isAfterDate(strDate, minDate, pattern) && isBeforeDate(strDate, maxDate, pattern)) {
            return true;
        }
        return false;
    }

}
